Repository navigation
fix(release): run the musl candidate as the host user inside the Alpine adapter - #2684
Merged
Merged
Conversation
fix(release): dogfood runner environment fixes (dev twin of #2676)
fix(release): musl adapter stderr hygiene (dev twin)
…ne adapter Run 30218355227 (v5.260726.9): darwin, glibc, and linux-arm64 dogfood all passed the full real-Codex lifecycle for the first time; musl failed at 'genie init must be run inside a git repository'. The container ran as root while the bind-mounted fixture tree is owned by the host runner. Git refuses a repository whose on-disk owner differs from the effective uid (dubious ownership), so N's genie init reported no repository; and even past git, every file the container created as root would poison later host-side stages against genie's fail-closed stat.uid ownership checks. Root is needed only for the apk bootstrap. Install su-exec alongside it and drop to the exact host uid:gid (passed via DOGFOOD_HOST_UID/GID) for the candidate exec — the same identity model the three host-native platforms pass under. Verified against the pinned alpine digest with no-new-privileges active: su-exec drops to the target uid and git accepts a matching-owner repository.
Contributor
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughChangesRelease metadata
Musl adapter identity validation
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant GitHubActions
participant Alpine
participant Adapter
participant Repository
participant Database
GitHubActions->>Alpine: pull pinned Alpine image
GitHubActions->>Adapter: download previous-stable musl binary
Alpine->>Adapter: run --version probe
GitHubActions->>Repository: seed repository through run-musl-dogfood.sh
Adapter->>Database: create genie.db
GitHubActions->>Database: verify host runner ownership
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…every touching PR The adapter historically executed only inside production release dogfood jobs, so each adapter defect cost a full release cycle to discover (pull-progress stderr on the strict probe, container-root git ownership). This smoke runs on any PR touching the adapter, on a real amd64 runner: - probe mode (no DOGFOOD_ROOT): --version must exit 0 with a byte-empty stderr, pinning the bootstrap-silence contract verifyCapability enforces - stateful mode: git init + genie init + task create + board through the container as the host uid — the exact leg that failed in v5.260726.9 — plus an ownership assertion on the seeded database Local replay of this leg is impossible on Apple Silicon (the x86_64 Bun binary requires AVX and dies under emulation), which is precisely why the adapter kept costing release cycles: this closes that gap permanently.
namastex888
approved these changes
Jul 26, 2026
This was referenced Jul 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One platform from a fully green chain
Run 30218355227 (v5.260726.9): darwin, glibc, and linux-arm64 dogfood all passed the complete real-Codex N→T lifecycle on CI for the first time ever. musl failed at
genie init must be run inside a git repository.Root cause
The Alpine container runs as root while the bind-mounted fixture tree is owned by the host runner uid. Git refuses a repository whose on-disk owner differs from the effective uid (dubious ownership) — so N's
genie initsees no repository. And even with a git override, every file the container created as root would poison later host-side stages against genie's own fail-closedstat.uidownership checks — the fixture tree is deliberately shared between container-side CLI stages and host-side Codex/MCP stages.Fix
Root exists only for the apk bootstrap. Install
su-execalongside it and drop to the exact hostuid:gid(passed viaDOGFOOD_HOST_UID/GID) for the candidate exec — restoring the same identity model the three host-native platforms pass under.Evidence
Verified against the exact pinned alpine digest with
no-new-privilegesactive:su-exec 1001:1001 id -u→ 1001, andgit rev-parseaccepts a matching-owner repository (the exact failing combination). Adapter unit tests pin the env pair and the su-exec drop;bash -nand lint clean.Main-first as before (the dogfood job executes the adapter from main); dev twin follows so its merge fires the release.
Summary by CodeRabbit
New Features
Bug Fixes
Chores
5.260726.7to5.260726.9.